package com.yanqu.road.entity.systemgroup.newmonopolymarket;

import com.yanqu.road.entity.DataObject;
import com.yanqu.road.entity.FieldTypeAnnotation;
import com.yanqu.road.entity.monopolymarket.office.MonopolyMarketOfficeTip;
import com.yanqu.road.entity.systemgroup.newmonopolymarket.resgrab.NewMonopolyMarketTempPoint;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

@FieldTypeAnnotation(tableName = "t_u_new_monopoly_market_user_data")
public class NewMonopolyMarketUserData extends DataObject {

    @FieldTypeAnnotation(select = true, update = true)
    private long userId;

    @FieldTypeAnnotation(desc = "每周")
    private int weekId;

    @FieldTypeAnnotation(desc = "系统分组")
    private int systemGroupId;

    @FieldTypeAnnotation(desc = "关引數量")
    private int guanYin;

    @FieldTypeAnnotation(desc = "上次关引恢复时间(S)")
    private long lastGuanYinRecTime;

    @FieldTypeAnnotation(desc = "现在榷署所在的位置")
    private int officeCurPos = -1;

    @FieldTypeAnnotation(desc = "现在榷署所在的位置等级")
    private int officeLevel;

    @FieldTypeAnnotation(desc = "现在榷署所在的位置编号 1开始 加载校验用")
    private int officeNo;

    @FieldTypeAnnotation(desc = "入座榷署的时间")
    private int officeSeatTime;

    @FieldTypeAnnotation(desc = "每日抢夺榷署次数")
    private int officeRobTimes;

    @FieldTypeAnnotation(desc = "累计时长，秒，每周重置")
    private int activeTime;

    @FieldTypeAnnotation(desc = "当前可领取的待客茶数量")
    private int teaLastNum;

    @FieldTypeAnnotation(desc = "待客茶上次领取的时间（s） 策划说，入座的时候置为当前时间，不用管领取后的时间产出")
    private int teaLastGetTime;

    @FieldTypeAnnotation(desc = "每日榷场重置时间")
    private int dailyOfficeResetTime;

    @FieldTypeAnnotation(desc = "每日资源战派遣重置时间")
    private int dailyResGrabResetTime;

    @FieldTypeAnnotation(desc = "是否有弹窗提示")
    private boolean hasTip;

    @FieldTypeAnnotation(desc = "最近一次进入榷署战报的时间  红点用")
    private int enterOfficeReportLastTime;

    @FieldTypeAnnotation(desc = "最近一次进入资源点战报的时间  红点用")
    private int enterResGrabReportLastTime;

    @FieldTypeAnnotation(desc = "榷署被抢的提示")
    private MonopolyMarketOfficeTip officeTip;

    @FieldTypeAnnotation(desc = "搜索结果")
    private Map<Integer, NewMonopolyMarketTempPoint> searchPointMap = new ConcurrentHashMap<>();

    @FieldTypeAnnotation(desc = "资源战待派遣")
    private NewMonopolyMarketTempPoint waitDispatchPoint;

    @FieldTypeAnnotation(desc = "获得区服奖励")
    private boolean getServerReward;

    //cache
    @FieldTypeAnnotation(desc = "获取玩家奖励")
    private boolean getUserReward;


    public long getUserId() {
        return userId;
    }

    public void setUserId(long userId) {
        if(this.userId != userId) {
            this.userId = userId;
            setUpdateOption();
        }
    }

    public int getWeekId() {
        return weekId;
    }

    public void setWeekId(int weekId) {
        if(this.weekId != weekId) {
            this.weekId = weekId;
            setUpdateOption();
        }
    }

    public int getSystemGroupId() {
        return systemGroupId;
    }

    public void setSystemGroupId(int systemGroupId) {
        if(this.systemGroupId != systemGroupId) {
            this.systemGroupId = systemGroupId;
            setUpdateOption();
        }
    }

    public int getGuanYin() {
        return guanYin;
    }

    public void setGuanYin(int guanYin) {
        if(this.guanYin != guanYin) {
            this.guanYin = guanYin;
            setUpdateOption();
        }
    }

    public long getLastGuanYinRecTime() {
        return lastGuanYinRecTime;
    }

    public void setLastGuanYinRecTime(long lastGuanYinRecTime) {
        if(this.lastGuanYinRecTime != lastGuanYinRecTime) {
            this.lastGuanYinRecTime = lastGuanYinRecTime;
            setUpdateOption();
        }
    }

    public int getOfficeCurPos() {
        return officeCurPos;
    }

    public void setOfficeCurPos(int officeCurPos) {
        if(this.officeCurPos != officeCurPos) {
            this.officeCurPos = officeCurPos;
            setUpdateOption();
        }
    }

    public int getOfficeLevel() {
        return officeLevel;
    }

    public void setOfficeLevel(int officeLevel) {
        if(this.officeLevel != officeLevel) {
            this.officeLevel = officeLevel;
            setUpdateOption();
        }
    }

    public int getOfficeNo() {
        return officeNo;
    }

    public void setOfficeNo(int officeNo) {
        if(this.officeNo != officeNo) {
            this.officeNo = officeNo;
            setUpdateOption();
        }
    }

    public int getOfficeSeatTime() {
        return officeSeatTime;
    }

    public void setOfficeSeatTime(int officeSeatTime) {
        if(this.officeSeatTime != officeSeatTime) {
            this.officeSeatTime = officeSeatTime;
            setUpdateOption();
        }
    }

    public int getOfficeRobTimes() {
        return officeRobTimes;
    }

    public void setOfficeRobTimes(int officeRobTimes) {
        if(this.officeRobTimes != officeRobTimes) {
            this.officeRobTimes = officeRobTimes;
            setUpdateOption();
        }
    }

    public int getActiveTime() {
        return activeTime;
    }

    public void setActiveTime(int activeTime) {
        if(this.activeTime != activeTime) {
            this.activeTime = activeTime;
            setUpdateOption();
        }
    }

    public int getTeaLastNum() {
        return teaLastNum;
    }

    public void setTeaLastNum(int teaLastNum) {
        if(this.teaLastNum != teaLastNum) {
            this.teaLastNum = teaLastNum;
            setUpdateOption();
        }
    }

    public int getTeaLastGetTime() {
        return teaLastGetTime;
    }

    public void setTeaLastGetTime(int teaLastGetTime) {
        if(this.teaLastGetTime != teaLastGetTime) {
            this.teaLastGetTime = teaLastGetTime;
            setUpdateOption();
        }
    }

    public int getDailyOfficeResetTime() {
        return dailyOfficeResetTime;
    }

    public void setDailyOfficeResetTime(int dailyOfficeResetTime) {
        if(this.dailyOfficeResetTime != dailyOfficeResetTime) {
            this.dailyOfficeResetTime = dailyOfficeResetTime;
            setUpdateOption();
        }
    }

    public int getDailyResGrabResetTime() {
        return dailyResGrabResetTime;
    }

    public void setDailyResGrabResetTime(int dailyResGrabResetTime) {
        if(this.dailyResGrabResetTime != dailyResGrabResetTime) {
            this.dailyResGrabResetTime = dailyResGrabResetTime;
            setUpdateOption();
        }
    }

    public boolean isHasTip() {
        return hasTip;
    }

    public void setHasTip(boolean hasTip) {
        if(this.hasTip != hasTip) {
            this.hasTip = hasTip;
            setUpdateOption();
        }
    }

    public int getEnterOfficeReportLastTime() {
        return enterOfficeReportLastTime;
    }

    public void setEnterOfficeReportLastTime(int enterOfficeReportLastTime) {
        if(this.enterOfficeReportLastTime != enterOfficeReportLastTime) {
            this.enterOfficeReportLastTime = enterOfficeReportLastTime;
            setUpdateOption();
        }
    }

    public int getEnterResGrabReportLastTime() {
        return enterResGrabReportLastTime;
    }

    public void setEnterResGrabReportLastTime(int enterResGrabReportLastTime) {
        if(this.enterResGrabReportLastTime != enterResGrabReportLastTime) {
            this.enterResGrabReportLastTime = enterResGrabReportLastTime;
            setUpdateOption();
        }
    }

    public MonopolyMarketOfficeTip getOfficeTip() {
        return officeTip;
    }

    public void setOfficeTip(MonopolyMarketOfficeTip officeTip) {
        this.officeTip = officeTip;
        setUpdateOption();
    }

    public Map<Integer, NewMonopolyMarketTempPoint> getSearchPointMap() {
        return searchPointMap;
    }

    public void setSearchPointMap(Map<Integer, NewMonopolyMarketTempPoint> searchPointMap) {
        this.searchPointMap = searchPointMap;
        this.setUpdateOption();
    }

    public NewMonopolyMarketTempPoint getWaitDispatchPoint() {
        return waitDispatchPoint;
    }

    public void setWaitDispatchPoint(NewMonopolyMarketTempPoint waitDispatchPoint) {
        this.waitDispatchPoint = waitDispatchPoint;
        setUpdateOption();
    }

    public boolean isGetUserReward() {
        return getUserReward;
    }

    public void setGetUserReward(boolean getUserReward) {
        this.getUserReward = getUserReward;
    }

    public boolean isGetServerReward() {
        return getServerReward;
    }

    public void setGetServerReward(boolean getServerReward) {
        if(this.getServerReward != getServerReward) {
            this.getServerReward = getServerReward;
            setUpdateOption();
        }
    }
}
